<?php

Yii::import('votaciones.models._base.BaseListasVotos');

class ListasVotos extends BaseListasVotos {

    /**
     * @return ListasVotos
     */
    public static function model($className = __CLASS__) {
        return parent::model($className);
    }

    public $porcentaje;

    public static function label($n = 1) {
        return Yii::t('app', 'Asignar Votos|Listas Votos', $n);
    }

//           array('id_lista, cantidad_votos, id_hont', 'required'),
//Muestra la informacion d las listas con sus respectivas votaciones
    public function searchListasVotos($id_hont) {
//Consulta en SQL 
//select   l.nombre , lv.cantidad_votos from listas_votos lv
//inner join lista l on lv.id_lista= l.id
//        where lv.id_hont=2
//        var_dump($id_hont);
//        die(2);
        $criteria = new CDbCriteria;
        $criteria->select = "l.nombre as id_lista , t.cantidad_votos";
        $criteria->join = "inner join lista l on t.id_lista= l.id";
        $criteria->condition = "t.id_hont=:idhont";
        $criteria->params = array(
            ':idhont' => $id_hont,
        );
        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
            'pagination' => array(
                'pageSize' => 5,
            ),
        ));
    }

//METODOLISTAVOTOS LISTAS Q OBTIENE LA INFORMACION 
//Muestra la informacion d las listas con sus respectivas votaciones
    public function searchListasVotosPorcentaje($id_hont) {
//select  l.nombre  ,lv.cantidad_votos from listas_votos lv 
//inner join lista l on lv.id_lista= l.id
//
//where lv.id_hont=1
        $command = Yii::app()->db->createCommand()
                ->select("
                      l.nombre ,lv.cantidad_votos
                        ")
                ->from("listas_votos lv ")
                ->join('lista l', 'lv.id_lista= l.id')
                ->where("lv.id_hont = :id_hont", array(':id_hont' => $id_hont))
                ->order("lv.cantidad_votos DESC")

        ;
        $accionesCampania = $command->queryAll();
        return $accionesCampania;
    }

    public function getPorcentajePieReporte($listasVotos, $modelHontCantidadVotosValidos) {
        $data = array();
        foreach ($listasVotos as $row) {
            array_push($data, array($row['nombre'], round($row['cantidad_votos'] * 100 / $modelHontCantidadVotosValidos, 2)));
        }
        return $data;
    }

    //SOLUCION
//Metodo en el cual retorna una matriz similar a la anterior si no q en esta matriz ya s asigna 
    //las respctivas informaciones apra cada dato su posicion d acuerdo al numero d escanios
    // es decir asignar sus respectivas posiciones
    public function matrizSolucion($arregloInfo, $Rangos) {
        $matriz = array();
        foreach ($arregloInfo as $row => $value) {
            $informacionNuevaAsignada = $this->asignarInformacion($value['informacion'], $Rangos);
            array_push($matriz, array('nombre' => $value['nombre'], 'votos' => $value['votos'], 'informacion' => $informacionNuevaAsignada));
        }
        return $matriz;
    }
//PASO 1
//asignara la posicion q tendra cada division realizada con anterioridad
    //y retornara un arreglo el cual suplantara al anterior con sus respectivas
    //orden d puesto 
    public function asignarInformacion($informacionDivisionesLista, $Rangos) {
        $informacionCambiada = array();
        foreach ($informacionDivisionesLista as $key) {

            $datoBuscar = $key['division'];
            $idKey = $this->seEncuentra($datoBuscar, $Rangos);
            if (!($idKey == false)) {//si es diferente de false es por q lo ncontro al dato a buscar
                array_push($informacionCambiada, array("division" => $datoBuscar, "posicion" => $idKey));
            }
            if ($idKey == false) {
                array_push($informacionCambiada, array("division" => $datoBuscar, "posicion" => "No"));
            }
        }
        return $informacionCambiada;
    }
//PASO 2
//metodo en l cual retorna el id dela informacion encontrada 
    // y si no pertenece retorna false
    public function seEncuentra($dato, $arregloInfo) {
        $idDato = array_search($dato, $arregloInfo);
        $datoRegreso = $idDato;

        return $datoRegreso;
    }

//Este metodo retorna un arreglo el cual muestra la informacion de cada lista
    //con su respectivo escrutinios
    public function obtenerResultadosEscrutinios($matrizSolucion) {
//        var_dump($matrizSolucion[0]['informacion']);
        $listasEscrutinios = array();

        foreach ($matrizSolucion as $row => $value) {
            $datosEscrutiniosListasX = $value['informacion'];
//            array_push($matriz, array('nombre' => $value['nombre'], 'votos' => $value['votos'], 'informacion' => $informacionNuevaAsignada));
            $numEscrutinioListaX = $this->contarInfoEscrutinios($datosEscrutiniosListasX);
            array_push($listasEscrutinios, array('nombre' => $value['nombre'], 'numescrutinios' => $numEscrutinioListaX));
        }
        return $listasEscrutinios;
    }

//suma unicamente si la informacion es diferente de NO
    public function contarInfoEscrutinios($datosEscrutiniosListas) {
//        var_dump($datosEscrutiniosListas);
        $numeroEscrutinios = 0;

//      'division' => float 104000
//      'posicion' => string '[2]' 
        foreach ($datosEscrutiniosListas as $row) {
            if (!(strcmp("No", $row['posicion']) == 0)) {
                $numeroEscrutinios++;
            }
        }
        return $numeroEscrutinios;
    }

//reporte ç
//     'series' => array(
//                        array('name' => 'Hampton Office', 'data' => array(20, 25, 25, 35, 30, 28, 25, 27, 23, 24, 25, 26, 27, 28, 33)),
//                        array('name' => 'Newport News Office', 'data' => array(15, 17, 14, 15, 18, 21, 22, 26, 33, 28, 30, 28, 25, 36, 40)),
//                        array('name' => 'Richmond Office', 'data' => array(5, 7, 8, 9, 7, 10, 11, 12, 13, 15, 17, 14, 15, 16, 18)),
//                        array('name' => 'Virgina Beach Office', 'data' => array(25, 27, 23, 22, 24, 20, 25, 26, 30, 27, 30, 28, 25, 26, 28)),
//                    ),
    public function arregloSeriesBarras($informacionListasEscrutinios) {
//        var_dump($informacionListasEscrutinios);
        $series = array();
        foreach ($informacionListasEscrutinios as $key) {
            array_push($series, array('name' => $key['nombre'], 'data' => array($key['numescrutinios'])));
        }
        return $series;
    }
//    array('14th', '15th', '16th', '17th', '18th', '19th', '20th', '21th', '22th', '23th', '24th', '25th', '26th', '27th', '28th')
    public function arreglocategoriesBarras($informacionListasEscrutinios) {
//        var_dump($informacionListasEscrutinios);
        $categories= array();
        foreach ($informacionListasEscrutinios as $key) {
            array_push($categories,$key['nombre']);
        }
        return $categories;
    }

    public function generatebuton($entidad_tipo) {
        $href = '#';
        $colorbycount = 'btn-inverse';
        $event_click = 'return false;';

        switch ($entidad_tipo) {
            case 'LLAMADA':
                if ($this->campania->permitirBotonesFecha()) {
                    $classenablefordate = '';
                    $href = $this->contacto_id;
                    $event_click = "return crearLlamadaCampania($href,$this->id);";
                } else {
                    $classenablefordate = 'disabled';
                }
                if (!$this->cantidad_llamada == 0) {
                    $colorbycount = ' btn-warning';
                }
                echo "<a title='Registrar llamada' id='llamada_cco_$this->id' rel = 'tooltip'  onclick='$event_click' data-original-title = 'Registrar llamada'>
                <button class = 'btn $colorbycount $classenablefordate'><i class = 'icon-phone'></i> (" . $this->cantidad_llamada . ")</button>
                </a>";
                break;
            case 'EMAIL':
                if ($this->campania->permitirBotonesFecha()) {
                    $classenablefordate = '';
                    $href = $this->contacto_id;
                    $event_click = "return crearEmailCampania($href,$this->id);";
                } else {
                    $classenablefordate = 'disabled';
                }
                if (!$this->cantidad_mail == 0) {
                    $colorbycount = ' btn-primary';
                }
                echo "<a title='' class='email' id='mail_cco_$this->id' rel='tooltip' onclick='$event_click' data-original-title='Enviar Correo Electrónico'>
                <button class='btn $colorbycount $classenablefordate'><i class='icon-envelope'></i> (" . $this->cantidad_mail . ")</button>
                </a>";
                break;
            case 'SMS':
                if ($this->campania->permitirBotonesFecha()) {
                    $classenablefordate = '';
                    $href = "sms/sms/cargarFormularioSmsCampania/cuenta_id/$this->contacto_id/campania_id/" . $this->campania_id . '/camp_clie_owner/' . $this->id;
                    $event_click = 'return crearSmsCampania("' . $href . '");';
                } else {
                    $classenablefordate = 'disabled';
                }
                if (!$this->cantidad_sms == 0) {
                    $colorbycount = ' btn-success';
                }

                echo "<a title='' class='sms'  id='sms_cco_$this->id' rel='tooltip'  onclick='$event_click' data-original-title='Enviar Sms'>
                <button class='btn $colorbycount $classenablefordate'><i class='icon-comments'></i> (" . $this->cantidad_sms . ")</button>
                </a>";
                break;
        }
    }

}
